const complieUtil = {
  // 对data中 . 深层数据的处理。 {{msg.a.b}}
  getVal(value,vm){
    if(typeof value === 'number') return value;
    return value.split(".").reduce((data,currentVal)=>{
      return data[currentVal]
    },vm.$data)
  },
  setVal(value,vm,inputVal){
    if(typeof value === 'number') return value;
    return value.split(".").reduce((data,currentVal)=>{
      if(typeof data[currentVal]!=="object"){
        data[currentVal] = inputVal
      }
      return data[currentVal]
    },vm.$data)
  },

  text(node,value,vm){
    let act = this.getVal(value,vm)
    this.update.textUpdater(node,act)

    // 创建watcher对象
    new Watcher(vm,value,(newVal)=>{
      node.textContent = newVal
    })
  },
  html(node,value,vm){
    let act = this.getVal(value,vm)
    this.update.htmlUpdater(node,act)

    // 创建watcher对象
    new Watcher(vm,value,(newVal)=>{
      node.innerHTML = newVal
    })
  },
  model(node,value,vm){
    let act = this.getVal(value,vm)
    this.update.modelUpdater(node,act)

    // 创建watcher对象
    new Watcher(vm,value,(newVal)=>{
      node.value = newVal
    })
    // 视图驱动数据
    node.addEventListener('input',(e)=>{
      // console.log(node.value,e.target.value)
      this.setVal(value,vm,e.target.value)
    })
  },
  on(node,value,vm,eventName){

  },
  update:{
    textUpdater(node,value){
      node.textContent = value
    },
  
    htmlUpdater(node,value){
      node.innerHTML = value
    },
  
    modelUpdater(node,value){
      node.value = value
    }
  }
}